package com.cowmooed.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 用户生成记录表实体类
 * 对应数据库表：generation_records
 */
@Data
@Builder
@TableName("generation_records")
public class GenerationRecords implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 记录唯一ID，主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 关联的用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 生成方式：prompt-提示词生成，image-图片生成
     */
    @TableField("generation_method")
    private GenerationMethod generationMethod;

    /**
     * 提示词内容，当生成方式为prompt时有值
     */
    @TableField("prompt")
    private String prompt;

    /**
     * 图片链接，当生成方式为image时有值
     */
    @TableField("image_url")
    private String imageUrl;

    /**
     * 3D模型链接，非空字段
     */
    @TableField("model_3d_url")
    private String model3dUrl;

    /**
     * 记录创建时间
     */
    @TableField(value = "created_time")
    private LocalDateTime createdTime;

    /**
     * 记录修改时间
     */
    @TableField(value = "updated_time")
    private LocalDateTime updatedTime;

    /**
     * 是否展示该记录，true-展示，false-不展示
     */
    @TableField("is_display")
    private Boolean isDisplay;

    /**
     * 任务ID
     */
    @TableField("task_id")
    private String taskId;

    /**
     * 请求ID
     */
    @TableField("request_id")
    private String requestId;

    /**
     * 状态：RUN-运行中，FINISHED-已完成
     */
    @TableField("status")
    private Status status;

    /**
     * 生成方式枚举
     */
    public enum GenerationMethod {
        prompt, image
    }

    /**
     * 状态枚举
     */
    public enum Status {
        RUN, FINISHED
    }
}